package main

import (
	"bufio"
	"fmt"
	"github.com/360EntSecGroup-Skylar/excelize"
	"os"
	"strings"
)

var path = "D:\\data.txt"
var out = "D:\\outputA.xlsx"

func main() {
	// 打开原始数据文件
	file, err := os.Open(path)
	if err != nil {
		fmt.Println("无法打开文件:", err)
		return
	}
	defer file.Close()

	// 创建Scanner并从文件读取
	scanner := bufio.NewScanner(file)

	// 创建 Excel 文件
	xlsx := excelize.NewFile()

	// 创建一个新的工作表
	sheetName := "Sheet1"
	xlsx.NewSheet(sheetName)

	// 设置表头
	headerSet := false

	// 逐行读取文件内容
	for scanner.Scan() {
		line := scanner.Text()

		// 使用 strings.Split 分割每行的内容
		fields := strings.Split(line, "|")

		// 如果表头没有设置，则设置表头
		if !headerSet {
			for col, value := range fields {
				colName := excelize.ToAlphaString(col + 1)
				cellName := fmt.Sprintf("%s1", colName)
				xlsx.SetCellValue(sheetName, cellName, strings.TrimSpace(value))
			}
			headerSet = true
		}

		// 获取每行的值并添加到工作表
		row := len(xlsx.GetRows(sheetName)) + 1
		for col, value := range fields {
			colName := excelize.ToAlphaString(col + 1)
			cellName := fmt.Sprintf("%s%d", colName, row)
			xlsx.SetCellValue(sheetName, cellName, strings.TrimSpace(value))
		}
	}

	// 将 Excel 保存为新文件
	err = xlsx.SaveAs(out)
	if err != nil {
		fmt.Println("保存 Excel 文件时发生错误:", err)
		return
	}

	fmt.Println("Excel 文件已成功生成：output.xlsx")
}
